Implementación de firma por lotes (batchsign) #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
El código que compone el siguiente commit implementa la firma por lotes en
Android, de esta forma se puede enviar desde el navegador un único intent
indicando como host batchsign. Esto es de especial interes en Chrome ya que
no permite el envío de más de un intent sin la interacción del usuario; por
otro lado también mejora la interacción de la aplicación con el usuario
al tener este último que introducir la firma digital una única vez para actuar
en un conjunto de documento.
El formato del intent es el siguiente:
Host: batchsign
query: se compone por los siguientes parámetros
fileid: identificador del batch a firmar
rtservlet: Localización desde la que se descarga el xml
con la definición de firmas
key: Clave de cifrado (opcional).
auth: Un objeto json en formato { "k": "nombre_clave",
"v": "valor_a_enviar" }
Un Ejemplo de intent
intent://batchsign?fileid=zMX5J64THr4ZJ5lC1nsL&rtservlet=https%3A%2F%2Fwww.rtservlet.org%2Fservlet_afirma%2FRetrieveService&key=64782813#Intent;scheme=afirma;package=es.gob.afirma;end
El procesado del xml y las firmas lo dirige la clase WebBatchSignActivity la
cual tiene un comportamiento similar a WebSignActivity.
Ejemplo del fichero XML con la definición de los documentos a firmar:
https://remoteserver/01_dni.pdf CAdES sign Zm9ybWF0PUNBZEVTIERldGFjaGVkCm1vZGU9ZXhwbGljaXQKcmVmZXJlbmNlc0RpZ2VzdE1ldGhvZD1odHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYKZmlsdGVycz1ub25leHBpcmVkOnRydWU7aXNzdWVyLnJmYzIyNTQ6KCYoIShDTj1DaWJlckNlbnRybyopKSghKENOPUdvYkNhbkNBKSkoIShPPUdvYmllcm5vIGRlIENhbmFyaWFzKSkoIShPPVBLSSkpKCEoTz1ET19OT1RfVFJVU1QqKSkpO3NpZ25pbmdDZXJ0OnRydWUK es.gob.afirma.signers.batch.SignSaverHttpPost VVJMPWh0dHBzOi8vMTkyLjE2OC4yLjE0Mi8K https://remoteserver/01_doc02.pdf CAdES sign Zm9ybWF0PUNBZEVTIERldGFjaGVkCm1vZGU9ZXhwbGljaXQKcmVmZXJlbmNlc0RpZ2VzdE1ldGhvZD1odHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYKZmlsdGVycz1ub25leHBpcmVkOnRydWU7aXNzdWVyLnJmYzIyNTQ6KCYoIShDTj1DaWJlckNlbnRybyopKSghKENOPUdvYkNhbkNBKSkoIShPPUdvYmllcm5vIGRlIENhbmFyaWFzKSkoIShPPVBLSSkpKCEoTz1ET19OT1RfVFJVU1QqKSkpO3NpZ25pbmdDZXJ0OnRydWUK es.gob.afirma.signers.batch.SignSaverHttpPost VVJMPWh0dHBzOi8vZGVzdGluby9TdG9yYWdlU2VydmljZQpmaWxlSWQ9aFZOb1BQY211amc4VDVva0JUWTcKEn el XML hay que destacar el apartado signsaver, la clase encargada del procesamiento es específica para
la firma en android y no puede utilizarse otra devido a las limitaciones de la arquitectura.
Para el almacenamiento de la firma es posible utilizar dos parámetros URL
y fileId:
El parámetro URL especifica la dirección a la que enviar el resultado de
la firma, es un parámetro requerido, y el request se envía con los
parámetros op, v, id y dat tal y como se realiza en las solicitudes de sign,
cosign y countersign.
El parámetro fileId es opcional y permite especificar el id con el que se
envía la firma, en caso de no indicarlo se utiliza el mismo id del campo
singlesign.
TODO:
de que se inicie el proceso de firma.
Ver:
https://developer.chrome.com/multidevice/android/intents Definición y limitaciones de intents con Chrome
https://github.com/ctt-gob-es/clienteafirma-docs Documentación de clientefirma